package ec.edu.ups.relevo.datos.dao;

import java.util.List;

import javax.ejb.Stateless;
import javax.persistence.Query;

import ec.edu.ups.relevo.datos.modeloBD.*;
import ec.edu.ups.relevo.utils.JPAGenericDAO;

@Stateless
public class UsuarioDAO extends JPAGenericDAO<Usuario, Long>
{
	public UsuarioDAO() 
	{
		super(Usuario.class);	
	}
	
	public List<Usuario> visualizar()
	{
		String q= "select usr from Usuario usr";
		System.out.println(q);
		List<Usuario> l=(List<Usuario>)em.createQuery(q,Usuario.class).getResultList();
		return l;
		
	}
	
	public Usuario buscarByMail(String mail)
	{
		Usuario usr=null;
			
			try{
			String sql= "select usr from Usuario usr where usr.mail=:mailParam";
			Query q=  em.createQuery(sql,Usuario.class);
			q.setParameter("mailParam", mail);
			Usuario aux=(Usuario)q.getSingleResult();
			usr=aux;
			}catch(Exception e){}
		return usr;
	}
	
	public Usuario buscarByNick(String nick)
	{
		Usuario usr=null;
			
			try{
			String sql= "select usr from Usuario usr where usr.usuario=:usrParam";
			Query q=  em.createQuery(sql,Usuario.class);
			q.setParameter("usrParam", nick);
			Usuario aux=(Usuario)q.getSingleResult();
			usr=aux;
			}catch(Exception e){}
		return usr;
	}

	public Usuario readAll(long id) {
		Usuario u=em.find(Usuario.class, id);
		for(int i=0;i<u.getUsr_roles().size();i++)
			u.getUsr_roles().get(i).getRoles().getId();
		
		return u;
	}
	
	public void quitarRoles(Usuario u)
	{
		System.out.println("quitando roles");
		//u.getInstanciasUsuario().clear();
		List<UsuarioRol> lista=u.getUsr_roles();
		for(int i=0;i<lista.size();i++)
		{
			try{
			UsuarioRol entidad=lista.get(i);
			u.getUsr_roles().remove(entidad);
			em.remove(em.find(UsuarioRol.class, entidad.getId()));
			i--;
			}catch (Exception e) {
				// TODO: handle exception
			}
		}
	}

	
}